home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ABC News Interactive: Earthquake
/
ABC News Interactive - Earthquake.iso
/
setup
/
setup.mst
< prev
next >
Wrap
Text File
|
1994-06-24
|
16KB
|
660 lines
'**************************************************************************
'* Earthquake Setup
'**************************************************************************
'$DEFINE DEBUG ''Define for script development/debugging
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''Dialog ID's
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST DESTPATH = 300
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITSUCCESS = 700
CONST OPTIONS = 800
CONST ADDHELP = 900
CONST QTNONE = 1100
CONST QTOLDER = 1200
CONST QTNEWER = 1300
CONST QTINCOMPLETE = 1400
CONST APPPATH = 1700
CONST WARN2 = 1800
CONST SINGLELIST = 1900
CONST EXTENDEDLIST = 3900
CONST TOOBIG = 6300
CONST BADPATH = 6400
CONST CDBADFILE = 7200
CONST CDBADNAME = 7700
''Bitmap ID
''CONST LOGO = 1
GLOBAL DEST$ '' Application destination path
GLOBAL CUIDLL$ '' Custom DLL
GLOBAL WinDrive$ '' Drive letter Windows is installed.
GLOBAL SrcDir$ ''
GLOBAL QTDirNeeded% '' Status if a QT files need to be copied.
GLOBAL QTFileCount% '' Number of QT files to check/copy.
GLOBAL QTDestDir$ '' Default destination directory for QT.
GLOBAL QTWSrcDir$ '' Directory where QT should/is installed
GLOBAL AutoexecWasModified%
GLOBAL RestartWindows% '' Status if need message to Restart Windows
GLOBAL szSectionYear%
GLOBAL szSectionMonth%
GLOBAL szSectionDay%
GLOBAL CheckQTFiles% '' Did we already check for the QT Files?
GLOBAL BackedUp% '' Status that user selected backup
GLOBAL CopyChoice$
GLOBAL UserChoice$
GLOBAL AutoExecChoice$
GLOBAL CDdrive$
DECLARE FUNCTION QTFilesOkay (szTemp$) AS INTEGER
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION VerifyQTDate (szDate$) AS INTEGER
DECLARE FUNCTION GetNewDestination ( szDir$ ) AS STRING
DECLARE FUNCTION AddCDromDriveLetter ( szLabel$, szWord$) AS INTEGER
DECLARE SUB PromptQT (szType%)
DECLARE SUB CreateIcon
DECLARE FUNCTION SoundCardFound LIB "mscuistf.dll" () AS INTEGER
DECLARE FUNCTION ChangeDriveLetter LIB "mscuistf.dll" (Setin$, Setout$, szLetter$, szWord$) AS INTEGER
DECLARE FUNCTION AppendToPath LIB "mscuistf.dll" (Setin$, Setout$, szPath$) AS INTEGER
DECLARE FUNCTION Verify256Color LIB "mscuistf.dll" () AS INTEGER
START:
SetTitle "Earthquake Setup"
CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
DEST$ = "C:\QUAKE"
CheckQTFiles% = 0
SoundCardWarning% = 0
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
END IF
ReadInfFile szInf$
WinDrive$ = MID$(GetWindowsDir, 1, 1)
IF IsDriveValid(WinDrive$) = 0 THEN
i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
GOTO QUIT
END IF
CHECKWINVER: '' Verify Windows 3.1 or later
WinMaj% = GetWindowsMajorVersion()
IF (WinMaj% < 3 OR (WinMaj% = 3 AND GetWindowsMinorVersion() < 10)) THEN
WRONGVER:
sz$ = UIStartDlg(CUIDLL$, CDBADNAME, "FInfoDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPop 1
END
ELSE
GOTO WRONGVER
ENDIF
ENDIF
WELCOME:
sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO WELCOME
ENDIF
GETPATH:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, APPPATH, "FEditDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
DEST$ = GetSymbolValue("EditTextOut")
IF IsDirWritable(DEST$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
ENDIF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
DEST$ = GetSymbolValue("EditTextOut")
UIPop 1
GOTO WELCOME
ELSEIF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO GETPATHL1
ENDIF
SrcDir$ = GetSymbolValue("STF_SRCDIR")
QTFileCount% = 12
QTWSrcDir = MakePath(SrcDir$,"QTW")
AutoexecWasModified% = 0
RestartWindows% = 0
ClearCopyList
SELECTCDDRIVE:
SetSymbolValue "ListItemsIn", ""
GetNetworkDrivesList "ListItemsIn"
CD1:
sz$ = UIStartDlg(CUIDLL$, SINGLELIST, "FListDlgProc", 0, "")
CDdrive$ = GetListItem("ListItemsOut", 1)
IF sz$ = "CONTINUE" THEN
IF CDdrive$ = "" THEN
GOTO CD1
ELSE
UIPop 1
ENDIF
ELSEIF sz$ = "REACTIVATE" THEN
GOTO CD1
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO GETPATH
ELSE
GOSUB ASKQUIT
GOTO CD1
END IF
QTCHECK:
IF CheckQTFiles% = 0 THEN
FilesOkay% = QTFilesOkay("")
IF FilesOkay% = 3 THEN
CopyChoice$ = "2"
ELSE
CopyChoice$ = "1"
ENDIF
UserChoice$ = "1"
AutoExecChoice$ = "1"
ENDIF
QTPROMPT:
IF FilesOkay% <> 0 THEN '' QT Files aren't Okay
IF FilesOkay% = 1 THEN
PromptQT QTNONE
ELSEIF FilesOkay% = 2 THEN
PromptQT QTOLDER
ELSEIF FilesOkay% = 3 THEN
PromptQT QTNEWER
ELSEIF FilesOkay% = 4 THEN
PromptQT QTINCOMPLETE
ENDIF
QTDESTINATION:
QTDirNeeded% = 0
AutoexecWasModified% = 0
IF BackedUp% = 0 THEN
IF UserChoice$ = CopyChoice$ THEN
QTDirNeeded% = 1
szTmp$ = QTDestDir$
QTDestDir$ = GetNewDestination(szTmp$)
IF BackedUp% = 0 THEN
IF FilesOkay% = 1 THEN
AutoexecWasModified% = 1
ELSEIF szTmp$ <> QTDestDir$ THEN
AutoexecWasModified% = 1
ENDIF
ELSE
GOTO QTPROMPT
ENDIF
ELSE
GOTO DOINSTALL
ENDIF
ELSE
GOTO GETPATH
ENDIF
BackedUp% = 0
IF AutoexecWasModified% = 1 THEN
SetSymbolValue "RadioDefault", AutoExecChoice$
AUTOPROMPT:
sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
rtn% = AppendToPath("C:\AUTOEXEC.BAT", "C:\AUTOEXEC.QTW", QTDestDir$)
ELSEIF sz$ = "REACTIVATE" THEN
GOTO AUTOPROMPT
ELSEIF sz$ = "BACK" THEN
AutoExecChoice$ = GetSymbolValue("ButtonChecked")
UIPop 1
GOTO QTDESTINATION
ELSEIF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO AUTOPROMPT
END IF
AutoExecChoice$ = GetSymbolValue("ButtonChecked")
IF AutoExecChoice$ = "1" THEN
CopyFile "C:\AUTOEXEC.BAT", "C:\AUTOEXEC.BAK", cmoOverwrite, 0
CopyFile "C:\AUTOEXEC.QTW", "C:\AUTOEXEC.BAT", cmoOverwrite, 0
RemoveFile "C:\AUTOEXEC.QTW", cmoForce
ENDIF
ENDIF
ENDIF
DOINSTALL:
AddSectionFilesToCopyList "Files", SrcDir$, DEST$
IF QTDirNeeded% = 1 THEN
AddSectionFilesToCopyList "Quick Time", QTWSrcDir$, QTDestDir$
ENDIF
IF GetCopyListCost(szExtras$, szCosts$, szNeededs$) <> 0 THEN
CHECKSPACE:
sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO CHECKSPACE
ENDIF
UIPop 1
END
ENDIF
IF QTDirNeeded% = 1 THEN
IF DoesDirExist(QTDestDir$) = 0 THEN
CreateDir QTDestDir$, cmoNone
ENDIF
ENDIF
IF DoesDirExist(DEST$) = 0 THEN
CreateDir DEST$, cmoNone
ENDIF
CopyFilesInCopyList
CreateIcon
rtn% = AddCDromDriveLetter("SYS", ".groupFileNames[]")
IF rtn% <> 0 THEN
i% = DoMsgBox("QUAKEP.SYS not updated. Contact technical support at 1-800-654-8802.", "Setup Warning", MB_OK+MB_TASKMODAL+MB_ICONHAND)
ENDIF
rtn% = AddCDromDriveLetter("INI", "AssetPath")
IF rtn% <> 0 THEN
i% = DoMsgBox("QUAKE.INI not updated. Contact technical support at 1-800-654-8802.", "Setup Warning", MB_OK+MB_TASKMODAL+MB_ICONHAND)
ENDIF
InvalidSystem% = 0
SetSymbolValue "ListItemsIn", ""
SOUNDCHECK:
IF SoundCardFound() = 0 THEN
AddListItem "ListItemsIn", "A Sound Card."
InvalidSystem% = 1
SoundCardWarning% = 2
ENDIF
MOUSECHECK:
IF HasMouseInstalled() = 0 THEN
AddListItem "ListItemsIn", "A Mouse."
InvalidSystem% = 1
IF SoundCardWarning = 2 THEN
SoundCardWarning% = 1
ENDIF
ENDIF
CHECK386:
IF GetProcessorType() < 3 THEN
AddListItem "ListItemsIn", "At least a 386 processor."
InvalidSystem% = 1
IF SoundCardWarning = 2 THEN
SoundCardWarning% = 1
ENDIF
ENDIF
VGACHECK:
IF GetScreenHeight() < 480 THEN
AddListItem "ListItemsIn", "Any VGA or better video adaptor"
InvalidSystem% = 1
IF SoundCardWarning = 2 THEN
SoundCardWarning% = 1
ENDIF
ENDIF
COLOR256:
IF Verify256Color = 0 THEN
AddListItem "ListItemsIn", "256 Color Mode."
InvalidSystem% = 1
IF SoundCardWarning = 2 THEN
SoundCardWarning% = 1
ENDIF
ENDIF
IF (InvalidSystem% = 1 AND SoundCardWarning <> 2) THEN
SHOWMIN:
sz$ = UIStartDlg(CUIDLL$, EXTENDEDLIST, "FListDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO SHOWMIN
ELSE
UIPop 1
ENDIF
ENDIF
IF AutoexecWasModified% = 1 THEN
WARN:
sz$ = UIStartDlg(CUIDLL$, ADDHELP, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO WARN
ENDIF
UIPop 1
ENDIF
IF SoundCardWarning% <> 0 THEN
SOUNDWARN:
sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO SOUNDWARN
ENDIF
UIPop 1
ENDIF
QUIT:
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
dlg% = EXITSUCCESS
ELSEIF ERR = STFQUIT THEN
dlg% = EXITQUIT
ELSE
dlg% = EXITFAILURE
END IF
QUITL1:
IF dlg% = EXITQUIT THEN
UIPop 1
END
ELSEIF dlg% = EXITFAILURE THEN
dlg% = EXITQUIT
END IF
sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
END
ERRQUIT:
i% = DoMsgBox("Setup failed.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
END
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO BADPATH
END IF
UIPop 1
RETURN
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION
'**
'** Purpose:
'** Arguments:
'** Returns: 0=Okay, 1=None, 2=Older, 3=Newer, 4=Incomplete
'*************************************************************************
FUNCTION QTFilesOkay (szTemp$) STATIC AS INTEGER
QTFilesOkay = 0
FOR i% = 1 TO QTFileCount% STEP 1
szKey$ = "QT" + STR$(i%)
szFile$ = GetSectionKeyFilename("Quick Time", szKey$)
IF i% = 1 THEN
QTDestDir$ = FindFileUsingFileOpen(szFile$)
IF QTDestDir$ = "" THEN
QTDestDir$ = WinDrive$ + ":\QTW\BIN"
ELSE
QTDestDir$ = MID$(QTDestDir$, 1, (LEN(QTDestDir$) - LEN(szFile$) - 1))
ENDIF
ENDIF
szFullPathFile$ = MakePath(QTDestDir$, szFile$)
szDate$ = GetDateOfFile(szFullPathFile$)
IF DoesFileExist(szFullPathFile$, femExists) = 0 THEN
IF i% = 1 THEN
QTFilesOkay = 1
ELSE
QTFilesOkay = 4
ENDIF
GOTO DONEQTCHECK
ELSE
szDate$ = GetDateOfFile(szFullPathFile$)
IF i% = 1 THEN
szSectionDate$ = GetSectionKeyDate("Quick Time", "QT 1")
szSectionYear% = GetYearFromDate(szSectionDate$)
szSectionMonth% = GetMonthFromDate(szSectionDate$)
szSectionDay% = GetDayFromDate(szSectionDate$)
ENDIF
tmpVal% = VerifyQTDate (szDate$)
IF tmpVal% = 1 THEN
QTFilesOkay = 2
GOTO DONEQTCHECK
ELSEIF tmpVal% = 2 THEN
QTFilesOkay = 3
GOTO DONEQTCHECK
ENDIF
ENDIF
NEXT i%
DONEQTCHECK:
CheckQTFiles% = 1
END FUNCTION
'**
'** Purpose:
'** Arguments:
'** Returns:
'** 0=same, 1=older, 2=newer -- than section date
'*************************************************************************
FUNCTION VerifyQTDate ( szDate$ ) STATIC AS INTEGER
VerifyQTDate = 0
newval% = GetYearFromDate(szDate$)
IF (newval% <> szSectionYear%) THEN
IF (newval% < szSectionYear%) THEN
VerifyQTDate = 1
ELSE
VerifyQTDate = 2
END IF
GOTO DONE1
END IF
newval% = GetMonthFromDate(szDate$)
IF (newval% <> szSectionMonth%) THEN
IF (newval% < szSectionMonth%) THEN
VerifyQTDate = 1
ELSE
VerifyQTDate = 2
END IF
GOTO DONE1
END IF
newval% = GetDayFromDate(szDate$)
IF (newval% <> szSectionDay%) THEN
IF (newval% < szSectionDay%) THEN
VerifyQTDate = 1
ELSE
VerifyQTDate = 2
END IF
GOTO DONE1
END IF
DONE1:
END FUNCTION
'**
'** Purpose:
'** Arguments:
'** Returns:
'*************************************************************************
FUNCTION GetNewDestination ( szDir$ ) STATIC AS STRING
GetNewDestination = szDir$
GETPATH:
SetSymbolValue "EditTextIn", szDir$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
GetNewDestination = GetSymbolValue("EditTextOut")
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
BackedUp% = 1
UIPop 1
ELSEIF sz$ = "EXIT" THEN
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
TMP1:
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO TMP1
ELSE
UIPop 1
END IF
GOTO GETPATHL1
ELSE
UIPop 1
END IF
END FUNCTION
'**
'** Purpose:
'** Arguments:
'** none.
'** Returns: cannot call till files have been installed to destination.
'** none.
'*************************************************************************
FUNCTION AddCDromDriveLetter(szLabel$, szWord$) STATIC AS INTEGER
'' Update file with CDROM Drive Letter
SysPFileName$ = MakePath(DEST$, GetSectionKeyFilename("Files", szLabel$))
TmpFile$ = MakePath(DEST$, "DRIVELET.TMP")
valstat% = ChangeDriveLetter(SysPFileName$, TmpFile$, CDdrive$, szWord$)
IF valstat% = 0 THEN
CopyFile TmpFile$, SysPFileName$, cmoOverwrite, 0
RemoveFile TmpFile$, cmoForce
ELSEIF valstat% = 1 THEN
RemoveFile TmpFile$, cmoForce
ENDIF
AddCDromDriveLetter = valstat%
END FUNCTION
'**
'** Purpose:
'** Arguments:
'** Returns:
'*************************************************************************
SUB PromptQT (szType%) STATIC
BackedUp% = 0
SetSymbolValue "RadioDefault", UserChoice$
QT1:
sz$ = UIStartDlg(CUIDLL$, szType%, "FRadioDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO QT1
ELSEIF sz$ = "BACK" THEN
BackedUp% = 1
UIPop 1
ELSEIF sz$ = "EXIT" THEN
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
QT2:
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO QT2
ELSE
UIPop 1
ENDIF
GOTO QT1
ENDIF
UserChoice$ = GetSymbolValue("ButtonChecked")
END SUB
'**
'** Purpose: Creates a Program Group and a Program Item
'** Arguments: None
'** Returns: Nothing
'*************************************************************************
SUB CreateIcon STATIC
CreateProgmanGroup "Earthquake", "", cmoNone
ShowProgmanGroup "Earthquake", 1, cmoNone
CreateProgmanItem "Earthquake", "Earthquake", MakePath(DEST$, GetSectionKeyFilename("Files", "EXE")), "", cmoOverwrite
CreateProgmanItem "Earthquake", "Read Me", "write "+MakePath(DEST$, GetSectionKeyFilename("Files", "HLP")), "", cmoOverwrite
END SUB